<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>VIP Spec Version 2.2</title>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

  <link rel="stylesheet" media="screen" href="http://fwab.jungshadow.com/css/screen.css" type="text/css" />

  <!-- Syntax Highlighter -->
  <link rel="stylesheet" media="screen" href="http://fwab.jungshadow.com/css/fw/sh/shCore.css" type="text/css" />
  <link rel="stylesheet" media="screen" href="http://fwab.jungshadow.com/css/fw/sh/shThemeDefault.css" type="text/css" />

  <style type="text/css">
    h1, h2, h3, h4, h5, h6 {
      color: rgb(36, 104, 153);
      margin-bottom: .25em;
      margin-top: .25em;
    }

    body {
      line-height: 1.4;
    }

    p, td {
      margin-bottom: 1em;
      font-size: .875em;
    }

    caption {
      margin-bottom: 1em;
      font-size: .75em;
    }

    acronym {
      border-bottom: 1px dotted #000;
      cursor: help;
    }

    .page-title .version {
      display: block;
      font-size: .5em;
      font-style: italic;
      color: #666;
    }

    @media print {
      /* Darker version for printing */
      h1, h2, h3, h4, h5, h6 {
        color: #000080;
        font-family: helvetica, sans-serif;
      }
    }

    caption {
      text-align: left;
      font-style: italic;
    }

    /* Definition lists: definition term bold */
    dt {
      font-weight: bold;
    }

    address {
      text-align: right;
    }

    table {
      margin: 0 auto;
      margin-bottom: 1em;
      border-collapse: separate;
      border-spacing: .2em;
      width: 100%;
    }

    thead th {
      text-transform: capitalize;
      white-space: nowrap;
      min-width: 6em;
      background-color: #0054af;
      color: #fff;
    }

    th, td {
      padding: .3em;
      vertical-align: middle;
    }

    tbody tr:nth-child(2n) {
      background-color: #c2e2f9;
    }

    tbody tr:nth-child(2n+1) {
      background-color: #eaf2ff;
    }

    /* Use the <file> tag for file and directory paths and names. */
    file {
      color: #905050;
      font-family: monospace;
    }

    .sidebar {
      float: right;
      width: 18%;
      position: relative;
    }

    .fixed {
      position: fixed;
      top: 0;
    }

    .checkboxes {
      line-height: 1;
    }

    .checkboxes, .content-navigation .links {
      margin-bottom: 1em;
    }

    .content-navigation {
      padding: 1em;
      font-size: .75em;
    }

    .content-navigation .header {
      font-size: .875em;
      min-width: 1em;
    }

    .content-navigation .checkboxes li li {
      padding-left: .75em;
    }

    .main {
      float: left;
      width: 80%;
    }

    .important-note {
      margin: 0 auto;
      display: block;
      background-color: #ccc;
      border: 1px dashed #666;
      padding: .5em;
      margin: .25em;
      text-align: center;
      font-size: 1.2em;
      -moz-border-radius: 15px;
      border-radius: 15px;
      -webkit-box-shadow: 0px 3px 5px #888;
      box-shadow: 0px 3px 5px #888;
    }

    div.note {
      -moz-border-radius: 12px 12px 12px 12px;
      background-color: #fffff0;
      border: 2px solid #6060a0;
      float: right;
      margin-right: 0%;
      padding: 1px;
      width: 3in;
    }

  </style>

  <script type="text/javascript">
    function highlight(name) {
      if (document.getElementsByTagName) {
        tags = [ 'span', 'div', 'tr', 'td' ];
        var elements;
        for (i in tags) {
          elements  = document.getElementsByTagName(tags[i]);
          if (elements) {
            for (var j = 0, element; element = elements[j]; j++) {
              var elementName = element.getAttribute("class");
              if (elementName == name) {
                element.style.backgroundColor = "#C0F0C0";
              } else if (elementName && elementName.indexOf("rev") == 0) {
                element.style.backgroundColor = "#FFFFFF";
              }
            }
          }
        }
      }
    }
  </script>
</head>
<body>
  <div id="top" class="header group">
    <div class="logo"><img title="VIP logo" alt="Voting Information Project" src="http://votinginfoproject.org/images/vip_logo.jpg" /></div>
    <div class="tagline">Easy access to essential voting information</div>
  </div> <!-- /.header -->

  <div class="nav-container">
    <div class="navbar group">
      <ul class="nav">
        <li><a href="#" title="Blog">Blog</a></li>
        <li><a href="#" title="Frequently Asked Questions">Frequently Asked Questions</a></li>
        <li><a href="#" title="Contact Us">Contact Us</a></li>
        <li class="last"><a href="#" title="Terms of Service">Terms of Service</a></li>
      </ul> <!-- /.nav -->
    </div> <!-- /.navbar -->
  </div> <!-- /.nav-container -->

  <hr />

  <div class="wrap">
    <div class="group">
      <div class="sidebar group">
        <div class="content-navigation">
          <h2 class="h4">Top-Level Items</h2>
          <ol class="links">
            <li><a href="#externallinking">Linking Externally</a></li>
            <li><a href="#sourceitems">Source</a></li>
            <li><a href="#electionitems">Election</a></li>
            <li><a href="#stateitems">State</a></li>
            <li><a href="#localityitems">Locality</a></li>
            <li><a href="#precinctitems">Precinct</a></li>
            <li><a href="#precinctsplititems">Precinct Split</a></li>
            <li><a href="#electionadministration">Election Administration</a></li>
            <li><a href="#electionofficial">Election Official</a></li>
            <li><a href="#pollinglocationitems">Polling Location</a></li>
            <li><a href="#earlyvotesiteitems">Early Vote Site</a></li>
            <li><a href="#contestitems">Contest</a></li>
            <li><a href="#electoraldistrictitems">Electoral District</a></li>
            <li><a href="#ballotitems">Ballot</a></li>
            <li><a href="#candidateitems">Candidate</a></li>
            <li><a href="#campaignissueitems">Campaign Issue</a></li>
            <li><a href="#candidatestatementitems">Candidate Statement</a></li>
            <li><a href="#referendumitems">Referendum</a></li>
            <li><a href="#customballotitems">Custom Ballot</a></li>
            <li><a href="#ballotresponseitems">Ballot Response</a></li>
            <li><a href="#streetsegment">Street Segment</a></li>
            <li><a href="#contestresult">Contest Result</a></li>
            <li><a href="#ballotresponseresult">Ballot Response Result</a></li>
          </ol>
          <h2 class="h4">Custom Types</h2>
          <ol class="links">
            <li><a href="#detailaddresstype">Detail Address</a></li>
            <li><a href="#simpleaddresstype">Simple Address</a></li>
          </ol>
          <h2 class="h4">Revision History</h2>
          <ol class="links">
            <li><a href="#changelog">Changelog</a></li>
          </ol>
        </div>
      </div>
      <div class="main">
        <div id="generalintro" class="rev1">
          <h2 class="page-title"><acronym title="Voting Information Project">VIP</acronym> Format Specification <span class="version">Version 2.2 (September 1, 2010)</span></h2>

          <h2>General Introduction</h2>
          <p>Welcome to the <a href="http://www.votinginfoproject.org">Voting Information Project</a>'s open XML format. This data format provides an easy way to produce data that lets programmer's take a voter's address, compare it to <a href="#streetsegment">street segments</a>, and determine that voter's <a href="#precinctitems">precinct</a> (or <a href="#precinctsplititems">precinct split</a>). Knowing a voter's precinct, allows information disseminators (such as Google) let that voter know about his or her <a href="#pollinglocationitems">polling location</a> (and <a href="#earlyvotesiteitems">early voting sites</a>), <a href="#ballotitems">ballot</a> (including both <a href="#candidateitems">candidates</a> and <a href="#referendumitems">referenda</a>), local <a href="#electionadministration">election administration</a>, and <a href="#electionofficial">election officials</a>. After the election, voters can learn <a href="#contestresult">who won</a>.</p>

          <h3>General Specification</h3>

          <p>The actual election information specifies collections of elements, some containing links between each other. The entire set of tags <b>must</b> be encapsulated in a root object named <b>vip_object</b>. See the <a href="http://code.google.com/p/election-info-standard/downloads/list">sample xml file and xsd file</a> for more details. The file naming standard is <a href="http://www.votinginfoproject.org/index.cfm?objectid=95FDF9E5-1D09-317F-BBADD2A46EC576BA">here</a>.</p>

          <div id="toplevel">
            <p>Each top-level tag is a container for other fields, described in their own section. The <b>only required</b> top-level tag is the <b>source</b> object. All other top-level tags can be repeated an unlimited number of times, or not included at all; order of top-level tags does not matter. Each top-level tag is <b>required</b> to have a single attribute, "id", which is required to be: (1) an integer, and (2) unique in a data file. The id attribute for the state object is often the state's <a href="http://www.itl.nist.gov/fipspubs/by-num.htm"><acronym title="Federal Information Processing Standards">FIPS</acronym> number</a>, but this is <b>not required</b>. As mentioned above, id attributes are not required to remain constant for the same piece of semantic data across multiple productions of the feed. (For example, candidate Michael Smith, running for dogcatcher in Iowa, is not required to have the same candidate id attribute each time the state of Iowa publishes data.)</p>
            <p>In general, subtag data can appear a maximum of one time within each top-level tag object and in any order. Exceptions are noted below.</p>
            <p>For the data itself, the special characters &amp;, &lt;, and &gt; need to be encoded as &amp;amp;, &amp;lt;, and &amp;gt;, respectively</p>

            <div id="externallinking">
              <h3>Linking Externally</h3>

              <div class="rev12">
                <p>Each element other than the root vip_object may (i.e. optionally) include the attributes <b>external_source_vip_id</b> and <b>external_source_datetime</b>, which indicate that the linked element is not found in the current document but in an external document with the specified vip_id and datetime in the external document's top-level <b>source</b> object. For this reason, the source object is required in every feed document. Two examples might elucidate the above discussion of external linking. Consider the case when an organization supplements Iowa's data on candidates with candidates' statements on issues. In the <b>candidate_statement</b> object, the organization links to state data by specifying</p>
                <pre class="brush: xml">
                  &lt;candidate_id external_source_vip_id="19" external_source_datetime="2008-06-05T15:45:10"&gt;321113&lt;candidate_id&gt;
                </pre>
                <p>where 321113 matches Michael Smith's candidate id attribute in the Iowa feed published on 2008-06-05 at 15:45:10. Note that the organization supplementing Iowa's data never has to specify the candidate's name. In a second case, the organization supplementing Iowa's data knows Michael Smith's email address. Here, the organization adds to the <b>candidate</b> object by specifying</p>
                <pre class="brush: xml">
                  &lt;candidate candidate_id external_source_vip_id="19" external_source_datetime="2008-06-05T15:45:10" external_source_object_id="321113" id="3705"&gt;
                    &lt;name&gt;Michael Smith&lt;/name&gt;
                    &lt;email&gt;msmith@smithin2008.org&lt;/email&gt;
                  &lt;/candidate&gt;
                </pre>
                <p>where again 321113 is the id in the Iowa file, and 3705 is the id in the supplementing file. If the supplementing file needs to link to Michael Smith (e.g., for a candidate statement), it should link <b>internally</b>, using the 3705 ID.</p>
              </div>
            </div>

          </div>
        </div>

        <div id="sourceitems" class="rev11">
          <h2>Source items</h2>

          <table>
            <caption>The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> field specifies the name of the organization that is providing the information.</td>
                <td>If the <b>name</b> field is invalid, the
          implementation is required to ignore the source element containing it.</td>
              </tr>
              <tr class="rev12">
                <td>vip_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>vip_id</b> field specifies the ID of the organization as assigned by VIP. This ID is <b>not an attribute</b> so as not to interfere with organizations' own numbering conventions (since id attributes must be unique across the entire file).</td>
                <td>If the <b>vip_id</b> field is invalid, the
          implementation is required to ignore the source element containing it.</td>
              </tr>
              <tr>
                <td>datetime</td>
                <td>DateTime</td>
                <td><b>Required</b></td>
                <td>The <b>datetime</b> field specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. This datetime is required to match the datetime specified in the feed's filename.</td>
                <td>If the <b>datetime</b> field is not present or invalid, the
          implementation is required to ignore the source element
          containing it.</td>
              </tr>
              <tr>
                <td>description</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>description</b> specifies both the nature of the organization providing the data and what data is in the feed.</td>
                <td>If the <b>description</b> is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>organization_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>organization_url</b> field contains a URL to the home page of the organization publishing the data</td>
                <td>If the <b>organization_url</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev12">
                <td>feed_contact_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>feed_contact_id</b> is a reference to (an election official object) the person who will respond to inquiries about the information contained within the file.</td>
                <td>If the <b>feed_contact_id</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev12">
                <td>tou_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>tou_url</b> is the website where the Terms of Use for the information in this file can be found.</td>
                <td>If the <b>tou_url</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a source element:</p>
          <pre class="brush: xml">
            &lt;source id="0"&gt;
              &lt;name&gt;State of Alabama&lt;/name&gt;
              &lt;vip_id&gt;1&lt;/vip_id&gt;
              &lt;datetime&gt;2008-06-05T15:45:10&lt;/datetime&gt;
              &lt;description&gt;The State of Alabama is the official source of eletion information in Alabama. This feed provides information on election dates, districts, offices, candidates, and precinct boundaries.&lt;/description&gt;
              &lt;organization_url&gt;http://www.sos.state.al.us/Elections&lt;/organization_url&gt;
              &lt;feed_contact_id&gt;1555122&lt;/feed_contact_id&gt;
              &lt;tou_url&gt;http://www.sos.state.al.us/vipFeed/terms_of_use.html&lt;/tou_url&gt;
            &lt;/source&gt;
          </pre>
          <pre class="brush: xml">
            &lt;source id="0"&gt;
              &lt;name&gt;League of Informed Voters&lt;/name&gt;
              &lt;vip_id&gt;101&lt;/vip_id&gt;
              &lt;datetime&gt;2008-12-05T14:37:01&lt;/datetime&gt;
              &lt;description&gt;The League of Informed Voters provides the public with information on candidate positions. This feed provides information on candidate statements and links to the feeds provided by the states.&lt;/description&gt;
              &lt;organization_url&gt;http://www.leagueofinformedvoters.org&lt;/organization_url&gt;
              &lt;feed_contact_id&gt;14415&lt;/feed_contact_id&gt;
              &lt;tou_url&gt;http://www.leagueofinformedvoters.org/feed/terms.html&lt;/tou_url&gt;
            &lt;/source&gt;
          </pre>
        </div>

        <div id="electionitems" class="rev1">
          <h2>Election items</h2>

          <table>
            <caption>The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. <span class="rev22">A feed must contain <b>exactly one</b> Election object. All relationships in the feed (e.g., street segment to precinct [split] to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.</span></caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>date</td>
                <td>Date</td>
                <td><b>Required</b></td>
                <td>The <b>date</b> field specifies when the election is being
          held. The date is considered to be in the timezone local to the state
          holding the election.</td>
                <td>If the <b>date</b> is not present or invalid, the
          implementation is required to ignore the election element
          containing it.</td>
              </tr>
              <tr>
                <td>election_type</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>election_type</b> field specifies the highest
          controlling authority for election (e.g., federal, state, county, city,
          town, etc.)</td>
                <td>If the <b>election_type</b> field is invalid, the
          implementation is required to ignore the election_type field.</td>
              </tr>
              <tr>
                <td>state_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>state_id</b> specifies a link to the state element
          where the election is being held.</td>
                <td>If the <b>state_id</b> is not present or invalid, the
          implementation is required to ignore the election element
          containing it.</td>
              </tr>
              <tr>
                <td>statewide</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>statewide</b> specifies whether the election is
          statewide. Valid items are "yes" and "no".</td>
                <td>If the <b>statewide</b> is not present or invalid, the
          implementation is required to default to "yes".</td>
              </tr>
              <tr class="rev2">
                <td>registration_info</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>registration_info</b> specifies information about
          registration for this election either as text or a URL.</td>
                <td>If the <b>registration_info</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>absentee_ballot_info</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>absentee_ballot_info</b> specifies information about
          requesting absentee ballots either as text or a URL</td>
                <td>If the <b>absentee_ballot_info</b> field isinvalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>results_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>results_url</b> field contains a URL where results
          for the election may be found</td>
                <td>If the <b>results_url</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev10">
                <td>polling_hours</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>polling_hours</b> field contains the hours (in local
          time) that Election Day polling locations are open. If polling hours
          differ in specific polling locations, alternative hours may be
          specified in the Polling Location object.</td>
                <td>If the <b>polling_hours</b> field is invalid or missing, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev20">
                <td>election_day_registration</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>election_day_registration</b> specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are "yes" and "no".</td>
                <td>If the <b>election_day_registration</b> field is invalid or missing, the
          implementation is required to ignore it and not assume one way or the other.</td>
              </tr>
              <tr class="rev20">
                <td>registration_deadline</td>
                <td>Date</td>
                <td>Optional</td>
                <td>The <b>registration_deadline</b> field specifies the last day to register for the election with the possible exception of Election Day registration.</td>
                <td>If the <b>registration_deadline</b> field is invalid or missing, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev20">
                <td>absentee_request_deadline</td>
                <td>Date</td>
                <td>Optional</td>
                <td>The <b>absentee_request_deadline</b> field specifies the last day to request an absentee ballot.</td>
                <td>If the <b>absentee_request_deadline</b> field is invalid or missing, the
          implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for an election element:</p>
          <pre class="brush: xml">
            &lt;election id="12345"&gt;
              &lt;date&gt;2007-09-15&lt;/date&gt;
              &lt;statewide&gt;yes&lt;/statewide&gt;
              &lt;state_id&gt;49&lt;/state_id&gt;
              &lt;election_type&gt;Federal&lt;/election_type&gt;
              &lt;results_url&gt;http://elections.results.org&lt;/results_url&gt;
              &lt;registration_info&gt;To register for this election, blah blah blah&lt;/registration_info&gt;
              &lt;absentee_ballot_info&gt;To request an absentee ballot, blah blah blah&lt;/absentee_ballot_info&gt;
              &lt;polling_hours&gt;7am-8pm&lt;/polling_hours&gt;
              &lt;election_day_registration&gt;yes&lt;/election_day_registration&gt;
              &lt;registration_deadline&gt;2009-10-01&lt;/registration_deadline&gt;
              &lt;absentee_request_deadline&gt;2009-11-01&lt;/absentee_request_deadline&gt;
            &lt;/election&gt;
          </pre>
        </div>

        <div id="stateitems">
          <h2>State items</h2>

          <table>
            <caption>The State object includes state-wide election information. The ID attribute is the state's FIPS code.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr class="rev7">
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> is the name of a state, such as Alabama</td>
                <td>If the <b>name</b> field is not present or invalid, the
          implementation is required to ignore the state element
          containing it.</td>
              </tr>
              <tr class="rev11">
                <td>election_administration_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>election_administration_id</b> links to the state's election administration object.</td>
                <td>If the <b>election_administration_id</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a state element:</p>

          <pre class="brush: xml">
            &lt;state id="1"&gt;
              &lt;name&gt;Alabama&lt;/name&gt;
              &lt;election_administration_id&gt;23455&lt;/election_administration_id&gt;
            &lt;/state&gt;
          </pre>
        </div>

        <div id="localityitems" class="rev3">
          <h2>Locality items</h2>
          <table>
            <caption>The Locality object represents the jurisdiction below the state (e.g., county).<strong>Subtag data must appear in the order below.</strong></caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the locality's name</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore the locality element
          containing it.</td>
              </tr>
              <tr>
                <td>state_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>state_id</b> links to the locality's state</td>
                <td>If the <b>state_id</b> field is invalid or not present, the
          implementation is required to ignore the locality element
          containing it.</td>
              </tr>
              <tr>
                <td>type</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>type</b> specifies the locality's type. Valid values are: county, city, town, township, borough, parish, village, and region (for Alaska). </td>
                <td>If the <b>type</b> field is invalid or not present, the
          implementation is required to ignore the locality element
          containing it.</td>
              </tr>
              <tr class="rev11">
                <td>election_administration_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>election_administration_id</b> links to the locality's election administration object.</td>
                <td>If the <b>election_administration_id</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>polling_location_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>If everyone in a locality votes at the same polling location, the <b>polling_location_id</b> specifies a link to the
          locality's polling location object. Use the <b>early_vote_site</b> for early vote centers.</td>
                <td>If the <b>polling_location_id</b> field is missing or invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>early_vote_site_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>early_vote_site_id</b> specifies a link to the
          locality's early vote or ballot drop location. It may be inconvenient to list a locality's early vote centers in this manner; instead, use the <b>locailty_id</b> tag of the <b>early_vote_site</b> element. Multiple <b>early_vote_site_id</b> tags may be specified.</td>
                <td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it with the following exception.</td>
              </tr>
              <tr class="rev22">
                <td>ballot_style_image_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this locality will vote on. If multiple ballot styles exist in a single locality, ignore this field.</td>
                <td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a locality element:</p>

          <pre class="brush: xml">
            &lt;locality id="1000"&gt;
              &lt;name&gt;Howard&lt;/name&gt;
              &lt;state_id&gt;49&lt;/state_id&gt;
              &lt;type&gt;county&lt;/type&gt;
              &lt;election_administration_id&gt;23456&lt;/election_administration_id&gt;
            &lt;/locality&gt;
          </pre>
        </div>

        <div id="precinctitems" class="rev3">
          <h2>Precinct</h2>

          <table>
            <caption>The Precinct object represents a precinct, which is contained within a Locality. <strong>Subtag data must appear in the order below.</strong></caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the precinct's name (or number)</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore the precinct element
          containing it.</td>
              </tr>
              <tr>
                <td>locality_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>locality_id</b> links to the locality that comprises
          the precinct</td>
                <td>If the <b>locality_id</b> field is invalid or not present,
          the implementation is required to ignore the precinct element
          containing it.</td>
              </tr>
              <tr class="rev20">
                <td>electoral_district_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>electoral_district_id</b> links to an electoral district (e.g., congressional district, state house district, school board district) that the precinct belongs to. <b><i>Highly Recommended</i></b> if candidate information is to be provided. Multiple allowed and recommended to specify the geography of multiple electoral districts. If an electoral district splits a precinct, use the <b>precinct_split</b> object and do not specify that particular electoral district in this object.</td>
                <td>If the <b>electoral_district_id</b> field is invalid or not present,
          the implementation is required to ignore the precinct element
          containing it.</td>
              </tr>
              <tr>
                <td>ward</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>ward</b> specifies the ward the precinct is contained
          within</td>
                <td>If the <b>ward</b> field is missing or invalid, the implementation is required
          to ignore it.</td>
              </tr>
              <tr class="rev14">
                <td>mail_only</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>mail_only</b> specifies whether voters in the precinct vote only by mailing their ballots (with the possible option of dropping off their ballots as well). Valid values are "yes" and "no", with "no" being the default is the tag is not present.</td>
                <td>If the <b>mail_only</b> field is missing or invalid, the implementation is required to default to "no".</td>
              </tr>
              <tr>
                <td>polling_location_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>polling_location_id</b> specifies a link to the
          precinct's polling location object. Multiple <b>polling_location_id</b> tags may be specified, but this use should be reserved for when multiple Election-Day-only vote locations serve specific precincts. Use the <b>early_vote_site</b> for early vote centers.</td>
                <td>If the <b>polling_location_id</b> field is missing or invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>early_vote_site_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>early_vote_site_id</b> specifies a link to the
          precinct's early vote sites or ballot drop location. This tag is especially important for precinct-specific vote sites or drop locations, but should be disregarded for locality-level (i.e., county-level) sites where multiple drop locations serve multiple precincts. In this case, precinct multiple <b>early_vote_site_id</b> tags may be specified, but would constitute redundant information. Also, if the precinct is mail-only then if no <b>early_vote_site_id</b> is present the implementation should assume that drop locations in the same locality (e.g., county) are valid locations.</td>
                <td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it with the following exception. If the precinct is mail-only and the <b>early_vote_site_id</b> field is missing then the implementation is required to assume that any early_vote_site objects within the same locality are valid drop locations for this precinct.</td>
              </tr>
              <tr class="rev22">
                <td>ballot_style_image_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this precinct will vote on. If multiple ballot styles exist in this precinct, ignore this field.</td>
                <td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Three example XML's for a precinct element. The first is a standard, in-person precinct. The second is a mail-in precinct with a precinct specific drop location. The third is a mail-in precinct with multiple drop locations spread around the county.</p>
          <!--<p class="important-note"><strong>Subtag data must appear in the order below.</strong></p>-->

          <pre class="brush: xml">
            &lt;precinct id="4567"&gt;
              &lt;name&gt;Camelot&lt;/name&gt;
              &lt;locality_id&gt;568&lt;/locality_id&gt;
              &lt;electoral_district_id&gt;100044&lt;/electoral_district_id&gt;
              &lt;electoral_district_id&gt;100055&lt;/electoral_district_id&gt;
              &lt;polling_location_id&gt;3845&lt;/polling_location_id&gt;
            &lt;/precinct&gt;
          </pre>

          <pre class="brush: xml">
            &lt;precinct id="1003"&gt;
              &lt;name&gt;2&lt;/name&gt;
              &lt;locality_id&gt;168&lt;/locality_id&gt;
              &lt;electoral_district_id&gt;100044&lt;/electoral_district_id&gt;
              &lt;electoral_district_id&gt;100056&lt;/electoral_district_id&gt;
              &lt;ward&gt;1&lt;/ward&gt;
              &lt;mail_only&gt;yes&lt;/mail_only&gt;
              &lt;early_vote_site_id&gt;1324&lt;/early_vote_site_id&gt;
            &lt;/precinct&gt;
          </pre>

          <pre class="brush: xml">
            &lt;precinct id="1043"&gt;
              &lt;name&gt;Multiple-drop precinct&lt;/name&gt;
              &lt;locality_id&gt;169&lt;/locality_id&gt;
              &lt;electoral_district_id&gt;100044&lt;/electoral_district_id&gt;
              &lt;electoral_district_id&gt;100056&lt;/electoral_district_id&gt;
              &lt;mail_only&gt;yes&lt;/mail_only&gt;
              &lt;early_vote_site_id&gt;1334&lt;/early_vote_site_id&gt;
              &lt;early_vote_site_id&gt;1335&lt;/early_vote_site_id&gt;
              &lt;early_vote_site_id&gt;1336&lt;/early_vote_site_id&gt;
            &lt;/precinct&gt;
          </pre>
        </div>

        <div id="precinctsplititems" class="rev3">
          <h2>Precinct Split</h2>

          <table>
            <caption>The Precinct Split object represents a part of a precinct. The Precinct Split object will link to its "parent" Precinct object. <strong>Subtag data must appear in the order below.</strong></caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the precinct split's name (or
          number)</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore the precinct split element
          containing it.</td>
              </tr>
              <tr>
                <td>precinct_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>precinct_id</b> specifies the precinct that comprises
          the precinct split.</td>
                <td>If the <b>precinct_id</b> field is invalid or not present,
          the implementation is required to ignore the precinct split
          element containing it.</td>
              </tr>
              <tr class="rev20">
                <td>electoral_district_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>electoral_district_id</b> links to an electoral district (e.g., congressional district, state house district, school board district) that the precinct split belongs to. <b><i>Highly Recommended</i></b> if candidate information is to be provided. Multiple allowed and recommended to specify the geography of multiple electoral districts.</td>
                <td>If the <b>electoral_district_id</b> field is invalid or not present,
          the implementation is required to ignore the precinct element
          containing it. Takes precedence over any conflicting information in the parent precinct object.</td>
              </tr>
              <tr>
                <td>polling_location_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>polling_location_id</b> specifies a link to the
          precinct split's polling location object. Multiple <b>polling_location_id</b> tags may be specified, but this use should be reserved for when multiple Election-Day-only vote locations serve specific precincts splits. Use the <b>early_vote_site</b> for early vote centers.</td>
                <td>If the <b>polling_location_id</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>early_vote_site_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>early_vote_site_id</b> specifies a link to the
          precinct split's early vote sites or ballot drop location. This tag is especially important for precinct split-specific vote sites or drop locations, but should be disregarded for locality-level (i.e., county-level) sites where multiple drop locations serve multiple precincts. In this case, precinct multiple <b>early_vote_site_id</b> tags may be specified, but would constitute redundant information. Also, if the precinct that comprises the precinct split is mail-only then if no <b>early_vote_site_id</b> is present the implementation should assume that drop locations in the same locality (e.g., county) are valid locations.</td>
                <td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it with the following exception. If the precinct split's 'parent' precinct is mail-only and the <b>early_vote_site_id</b> field is missing then the implementation is required to assume that any early_vote_site objects within the same locality are valid drop locations for this precinct.</td>
              </tr>
              <tr class="rev22">
                <td>ballot_style_image_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this precinct split will vote on.</td>
                <td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a precinct split element:</p>
          <pre class="brush: xml">
            &lt;precinct_split id="104567"&gt;
              &lt;name&gt;Camelot_a&lt;/name&gt;
              &lt;precinct_id&gt;4567&lt;/precinct_id&gt;
              &lt;electoral_district_id&gt;100032&lt;/electoral_district_id&gt;
              &lt;electoral_district_id&gt;100062&lt;/electoral_district_id&gt;
              &lt;polling_location_id&gt;1325&lt;/polling_location_id&gt;
              &lt;ballot_style_image_url&gt;http://bit.ly/20330303&lt;/ballot_style_image_url&gt;
            &lt;/precinct_split&gt;
          </pre>
        </div>

        <div id="electionadministration" class="rev11">
          <h2>Election Administration</h2>

          <table>
            <caption>The Election Administration represents an institution for serving a locality's (or state's) election functions.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr class="rev13">
                <td>name</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>name</b> specifies the name of the office/administration. While this field is optional for backwards compatibility reasons, it is recommended to be specified. Note the default value if unspecified.</td>
                <td>If the <b>name</b> field is invalid or not present,
          the implementation is required to use "Election Administration" as the default.</td>
              </tr>
              <tr>
                <td>eo_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>eo_id</b> links to the election official object for the person in charge of the office/administration.</td>
                <td>If the <b>eo_id</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>ovc_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>ovc_id</b> links to the election official object for the contact person for overseas voters.</td>
                <td>If the <b>ovc_id</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>physical_address</td>
                <td>simpleAddressType</td>
                <td>Optional</td>
                <td>The <b>physical_address</b> element specifies the election administration's office street address.</td>
                <td>If the <b>physical_address</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>mailing_address</td>
                <td>simpleAddressType</td>
                <td>Optional</td>
                <td>The <b>mailing_address</b> element specifies the election administration's mailing address.</td>
                <td>If the <b>mailing_address</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>elections_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>elections_url</b> specifies web address the administration's website.</td>
                <td>If the <b>elections_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev12">
                <td>registration_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>registration_url</b> specifies web address for information on registering to vote.</td>
                <td>If the <b>registration_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev12">
                <td>am_i_registered_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>am_i_registered_url</b> specifies the web address for information on whether an individual is registered.</td>
                <td>If the <b>am_i_registered_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev12">
                <td>absentee_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>absentee_url</b> specifies the web address for information on absentee or early voting.</td>
                <td>If the <b>absentee_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev13">
                <td>where_do_i_vote_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>where_do_i_vote_url</b> specifies web address for information on where an individual votes based on their address.</td>
                <td>If the <b>where_do_i_vote_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>what_is_on_my_ballot_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>what_is_on_my_ballot_url</b> specifies web address for information on what is on an individual's ballot.</td>
                <td>If the <b>whats_on_my_ballot_url</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>rules_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>rules_url</b> specifies a URL for the election rules
          and laws (if any) for the jurisdiction of the administration</td>
                <td>If the <b>rules_url</b> field is invalid the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev15">
                <td>voter_services</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>voter_services</b> item specify the services available
          voters at the election administration building. Services might include:
          registration, absentee ballot request, or early voting. Please use
          complete sentences. </td>
                <td>If the <b>voter_services</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>hours</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>hours</b> element specifies the hours of operation (in local time) of the election administration office.
                <td>If the <b>hours</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for an election administration element:</p>

          <pre class="brush: xml">
            &lt;election_administration id="3456"&gt;
              &lt;name&gt;Howard County Board of Elections&lt;/name&gt;
              &lt;eo_id&gt;12345&lt;/eo_id&gt;
              &lt;ovc_id&gt;12346&lt;/ovc_id&gt;
              &lt;physical_address&gt;
                &lt;location_name&gt;Government Center&lt;/location_name&gt;
                &lt;line1&gt;12 Chad Ct.&lt;/line1&gt;
                &lt;city&gt;Tempe&lt;/city&gt;
                &lt;state&gt;AZ&lt;/state&gt;
                &lt;zip&gt;88898&lt;/zip&gt;
              &lt;/physical_address&gt;
              &lt;mailing_address&gt;
                &lt;line1&gt;P.O. Box 32&lt;/line1&gt;
                &lt;city&gt;Tempe&lt;/city&gt;
                &lt;state&gt;AZ&lt;/state&gt;
                &lt;zip&gt;88898&lt;/zip&gt;
              &lt;/mailing_address&gt;
              &lt;elections_url&gt;http://www.localelections.st.gov&lt;/elections_url&gt;
              &lt;registration_url&gt;http://www.localelections.st.gov/register.html&lt;/registration_url&gt;
              &lt;am_i_registered_url&gt;http://www.localelections.st.gov/check_reg.html&lt;/am_i_registered_url&gt;
              &lt;absentee_url&gt;http://www.localelections.st.gov/early_absentee.html&lt;/absentee_url&gt;
              &lt;where_do_i_vote_url&gt;http://www.localelections.st.gov/where_vote.html&lt;/where_do_i_vote_url&gt;
              &lt;rules_url&gt;http://www.localelections.st.gov/election_law.html&lt;/rules_url&gt;
              &lt;voter_services&gt;Early voting and absentee ballot request are available beginning October 1. Voter registration is always available.&lt;/voter_services&gt;
              &lt;what_is_on_my_ballot_url&gt;http://www.localelections.st.gov/myballot.html&lt;/what_is_on_my_ballot_url&gt;
              &lt;hours&gt;M-F 9am-6pm Sat 9am-Noon&lt;/hours&gt;
            &lt;/election_administration&gt;
          </pre>
        </div>

        <div id="electionofficial" class="rev11">
          <h2>Election Official</h2>

          <table>
            <caption>The Election Official object comprises the name and contact information for an election official.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the election official's name</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore the Election Official element
          containing it.</td>
              </tr>
              <tr>
                <td>title</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>title</b> element specifies the election official's title in the office.</td>
                <td>If the <b>title</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>phone</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>phone</b> element specifies the election official's phone number, optionally including the extension.</td>
                <td>If the <b>phone</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>fax</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>fax</b> element specifies the election official's fax number.</td>
                <td>If the <b>fax</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>email</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>email</b> element specifies the election official's email address.</td>
                <td>If the <b>email</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for an election official element:</p>
          <pre class="brush: xml">
            &lt;election_official id="1023"&gt;
              &lt;name&gt;Roberta Smith&lt;/name&gt;
              &lt;title&gt;Registrar&lt;/title&gt;
              &lt;phone&gt;(101) 555-1212&lt;/phone&gt;
              &lt;fax&gt;(101) 555-1213&lt;/fax&gt;
              &lt;email&gt;rsmith@state.gov&lt;/email&gt;
            &lt;/election_official&gt;
          </pre>
        </div>

        <div id="pollinglocationitems" class="rev3">
          <h2>Polling Location</h2>

          <table>
            <caption>The Polling Location object represents a site where voters cast ballots on Election Day.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>address</td>
                <td>simpleAddressType</td>
                <td><b>Required</b></td>
                <td>The <b>address</b> specifies the polling location's address. It also optionally includes the polling location's name (e.g., Springfield Elementary).</td>
                <td>If the <b>address</b> field is invalid or not present, the
          implementation is required to ignore the polling location
          element containing it.</td>
              </tr>
              <tr>
                <td>directions</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>directions</b> specify further instructions for
          locating the polling location.</td>
                <td>If the <b>directions</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev10">
                <td>polling_hours</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>polling_hours</b> field contains the hours (in local
          time) that Election Day polling locations are open. This information
          overrides any information specified in the Election object.</td>
                <td>If the <b>polling_hours</b> field is invalid or missing, the
          implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a polling location element:</p>

          <pre class="brush: xml">
            &lt;polling_location id="4567"&gt;
              &lt;address&gt;
                &lt;location_name&gt;Springfield Elementary&lt;/location_name&gt;
                &lt;line1&gt;123 Main St.&lt;/line1&gt;
                &lt;city&gt;Springfield&lt;/city&gt;
                &lt;state&gt;IL&lt;/state&gt;
                &lt;zip&gt;44444&lt;/zip&gt;
              &lt;/address&gt;
              &lt;directions&gt;Enter through gym door.&lt;/directions&gt;
              &lt;polling_hours&gt;7:30am-8:30pm&lt;/polling_hours&gt;
            &lt;/polling_location&gt;
          </pre>
        </div>

        <div id="earlyvotesiteitems" class="rev4">
          <h2>Early Vote Site items</h2>

          <table>
            <caption>The Early Vote Site object represents a place where completed ballots can be returned prior to the election, or on Election Day. This object can represent: a registrar's office that offers early voting, a temporary early vote site, a ballot drop box, or similar location.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th><br>
                </th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>name</b> specifies the ballot drop location's name. Including the name of the main service will be helpful: "Springfield Ballot Drop Location 2" or "East Springfield Early Vote Center" is preferred to "Springfield Center 2".</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>address</td>
                <td>simpleAddressType</td>
                <td><b>Required</b></td>
                <td>The <b>address</b> specifies the ballot drop location's
          address</td>
                <td>If the <b>address</b> field is invalid or not present, the
          implementation is required to ignore the ballot drop location
          element containing it.</td>
              </tr>
              <tr>
                <td>state_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>state_id</b> links to the ballot drop location's
          state. Either the state_id or locality_id is required. Use the state_id
          if the ballot can be dropped anywhere in the state.</td>
                <td>If the <b>state_id</b> field is invalid or not present, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>locality_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>locality_id</b> links to the ballot drop location's
          locality. Either the locality_id or state_id is required. Use the
          locality_id if the ballot must be dropped in the correct locality.</td>
                <td>If the <b>state_id</b> field is invalid or not present, the
          implementation is required to ignore it. If <b>state_id</b> is not present as well, then the implementation should assume that the early vote site is linked to a locality, precinct, or precinct_split through the early_vote_site_id fields in those elements.</td>
              </tr>
              <tr>
                <td>directions</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>directions</b> specify further instructions for
          locating the ballot drop location.</td>
                <td>If the <b>directions</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>voter_services</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>voter_services</b> item specify the services available
          voters at the ballot drop location. Services might include:
          registration, absentee ballot request, or early voting. Please use
          complete sentences. </td>
                <td>If the <b>voter_services</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>start_date</td>
                <td>Date</td>
                <td>Optional</td>
                <td>Highly recommended. The <b>start_date</b> specifies the first date for early voting (or ballot drop-off) at this site. </td>
                <td>If the <b>start_date</b> field is invalid or not present,
          the implementation is required to ignore it and assume that the early vote site is operational.</td>
              </tr>
              <tr class="rev22">
                <td>end_date</td>
                <td>Date</td>
                <td>Optional</td>
                <td>Highly recommended. The <b>end_date</b> specifies the last date for early voting (or ballot drop-off) at this site. </td>
                <td>If the <b>end_date</b> field is invalid or not present,
          the implementation is required to ignore it and assume that the early vote site is operational.</td>
              </tr>
              <tr class="rev13 rev22">
                <td>days_times_open</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>days_times_open</b> item specify dates and times that the location is open for voter services. Please specify the days of the week (e.g., "Monday through Saturday") and times (e.g., "9am to 6pm"). </td>
                <td>If the <b>days_times_open</b> field is invalid or not present,
          the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a polling location element:</p>

          <pre class="brush: xml">
            &lt;early_vote_site id="5467"&gt;
              &lt;name&gt;Springfield Ballot Drop&lt;/name&gt;
              &lt;address&gt;
                &lt;location_name&gt;Early Vote Kiosk Number 52&lt;/location_name&gt;
                &lt;line1&gt;321 Main St.&lt;/line1&gt;
                &lt;city&gt;Springfield&lt;/city&gt;
                &lt;state&gt;IL&lt;/state&gt;
                &lt;zip&gt;44444&lt;/zip&gt;
              &lt;/address&gt;
              &lt;state_id&gt;32&lt;/state_id&gt;
              &lt;locality_id&gt;101&lt;/locality_id&gt;
              &lt;directions&gt;Next to Post Office.&lt;/directions&gt;
              &lt;voter_services&gt;Early voting is available.&lt;/voter_services&gt;
              &lt;start_date&gt;2010-10-01&lt;/start_date&gt;
              &lt;end_date&gt;2010-11-04&lt;/end_date&gt;
              &lt;days_times_open&gt; Mon-Fri: 9am - 6pm. Sat. and Sun.: 10am - 7pm.&lt;/days_times_open&gt;
            &lt;/early_vote_site&gt;
          </pre>
        </div>

        <div id="contestitems" class="rev9">
          <h2>Contest items</h2>

          <table>
            <caption>The Contest object represents a single contest, which could be between candidates, adoption of a resolution, or retention of judges (among other possibilities). The geographic scope of the Contest object is the Electoral District, which the Contest object links to.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr class="rev5">
                <td>election_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>election_id</b> specifies a link to the election
          under which this contest is being held.</td>
                <td>If the <b>election_id</b> is not present or invalid, the
          implementation is required to ignore the contest element
          containing it.</td>
              </tr>
              <tr class="rev20">
                <td>electoral_district_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>electoral_district_id</b> specifies a link to the
          electoral district for the contest (e.g., congressional district, state senate district).</td>
                <td>If the <b>electoral_district_id</b> is not present or invalid,
          the implementation is required to ignore the contest element
          containing it.</td>
              </tr>
              <tr>
                <td>type</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>type</b> specifies the type of contest that is being
          run (i.e., general, primary, run-off, referendum).</td>
                <td>If the <b>type</b> field is invalid or not present, the
          implementation is required to ignore the contest element
          containing it.</td>
              </tr>
              <tr class="rev6">
                <td>partisan</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>partisan</b> field specifies whether the contest is
          partisan (i.e., the candidates are official affiliated with a party,
          including contests that are partisan primaries). Data should be either
          "yes" or "no". (This field may is a candidate for deletion.)</td>
                <td>If the <b>partisan</b> field is invalid, the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev6">
                <td>primary_party</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>primary_party</b> field specifies the name of the
          party the contest is for, if this is a single-party contest (such as a
          Democratic primary).</td>
                <td>If the <b>primary_party</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev13">
                <td>electorate_specifications</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>electorate_specifications</b> field specifies any changes to the eligible electorate for this contest past the usual, "all registered voters" electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote.</td>
                <td>If the <b>electorate_specifications</b> field is invalid, the
          implementation is required to ignore it, and the implementation may assume that all registered voters are eligible to vote.</td>
              </tr>
              <tr class="rev6">
                <td>special</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>special</b> field specifies whether the contest is
          being held outside of the normal cycle for that office. Data should be
          either "yes" or "no"; the default is "no".</td>
                <td>If the <b>special</b> field is invalid, the implementation
          <b>defaults</b> to "no".</td>
              </tr>
              <tr>
                <td>office</td>
                <td>String</td>
                <td>Optional</td>
                <td>Highly recommended (except for referenda). The <b>office</b> field specifies the name of the office
          that the contest is deciding and should be identical to what the voter sees on his/her ballot. Should only be blank for referenda.</td>
                <td>If the <b>office</b> field is invalid, the implementation is
                required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>filing_closed_date</td>
                <td>Date</td>
                <td>Optional</td>
                <td>The <b>filing_closed_date</b> field specifies the last date to file as a candidate for this contest.</td>
                <td>If the <b>filing_closed_date</b> field is invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev10">
                <td>number_elected</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>number_elected</b> field specifies the number of
          candidates elected to the office in this contest.</td>
                <td>If the <b>number_elected</b> field is invalid or missing,
          the implementation <b>defaults</b> to 1.</td>
              </tr>
              <tr class="rev10">
                <td>number_voting_for</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>number_voting_for</b> field specifies the number of
          candidates elected to the office in this contest.</td>
                <td>If the <b>number_voting_for</b> field is invalid or missing,
          the implementation <b>defaults</b> to 1.</td>
              </tr>
              <tr class="rev12">
                <td>ballot_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>ballot_id</b> field specifies a link to the ballot for this contest.</td>
                <td>If the <b>ballot_id</b> field is invalid, the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev20">
                <td>ballot_placement</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>ballot_placement</b> the placement of this contest among the other contests in the election. For instance, the gubernatorial contest, on the top of the ballot, would have an a ballot_placement value of "1" and all of the congressional contests might have a value attribute of "2". Since each voter only votes in one congressional contest, there would be no ambiguity for ballot placement. Numbers need not be consecutive.</td>
                <td>If the <b>ballot_placement</b> field is invalid, the implementation is required to ignore it. In this case, the implementation should order a ballot in a logical way (i.e., more important elections toward the top) but note that the actual order by be different.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a ballot element:</p>
          <pre class="brush: xml">
            &lt;contest id="122312"&gt;
              &lt;election_id&gt;12345&lt;/election_id&gt;
              &lt;type&gt;Primary run-off&lt;/type&gt;
              &lt;electoral_district_id&gt;37&lt;/electoral_district_id&gt;
              &lt;partisan&gt;yes&lt;/partisan&gt;
              &lt;primary_party&gt;Federalist&lt;/primary_party&gt;
              &lt;electorate_specifications&gt;Must be registered with the party in question by August 10, 2008 to vote in the primary election.&lt;/electorate_specifications&gt;
              &lt;special&gt;yes&lt;/special&gt;
              &lt;office&gt;County supervisor&lt;/office&gt;
              &lt;number_elected&gt;1&lt;/number_elected&gt;
              &lt;number_voting_for&gt;1&lt;/number_voting_for&gt;
              &lt;ballot_id&gt;30017&lt;/ballot_id&gt;
              &lt;ballot_placement&gt;1&lt;/ballot_placement&gt;
            &lt;/contest&gt;
          </pre>
        </div>

        <div id="electoraldistrictitems" class="rev3">
          <h2>Electoral District items</h2>

          <table>
            <caption>The Electoral District object represents the geographic area in which a single contest is held. Examples of Electoral District include: statewide, congressional district, a state senate district, and a fire district. The geographic area that comprises a Electoral District is defined by which precinct or precinct splits link to the Electoral District.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the electoral area's name</td>
                <td>If the <b>name</b> field is invalid or not present, the
          implementation is required to ignore the electoral area
          element containing it.</td>
              </tr>
              <tr>
                <td>type</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>type</b> specifies the type of electoral area (e.g.,
          statewide, state senate district, state house district, fire district,
          congressional district, school district, etc.)</td>
                <td>If the <b>type</b> field is invalid or not present, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>number</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>number</b> specifies the district number of the district. Example: 34, in the case of the 34th State Senate District. If a number is not applicable, instead of leaving the field blank, leave this field out of the object; empty strings are not valid for xs:integer fields.</td>
                <td>If the <b>number</b> field is invalid or not present, the
          implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Two examples of electoral area element.</p>
          <pre class="brush: xml">
            &lt;electoral_district id="1000"&gt;
              &lt;name&gt;statewide&lt;/name&gt;
              &lt;type&gt;statewide&lt;/type&gt;
            &lt;/electoral_district&gt;
          </pre>

          <pre class="brush: xml">
            &lt;electoral_district id="1034"&gt;
              &lt;name&gt;SD-34&lt;/name&gt;
              &lt;type&gt;senate district&lt;/type&gt;
              &lt;number&gt;34&lt;/number&gt;
            &lt;/electoral_district&gt;
          </pre>
        </div>

        <div id="ballotitems" class="rev1">

          <h2>Ballot items</h2>

          <table>
            <caption>The Ballot object represents the ballot item for <b>one contest</b>. The Ballot object is linked to by the corresponding Contest object. The Ballot object links to the Candidate objects or Referendum objects that compose the ballot. <strong>Subtag data must appear in the order below.</strong></caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th><br>
                </th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>referendum_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>referendum_id</b> specifies a link to a referendum
          element, and is used to link to a single referendum item on a ballot.</td>
                <td>If the <b>referendum_id</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>candidate_id</td>
                <td>Integer</td>
                <td>Optional;<br>multiple allowed</td>
                <td>The <b>candidate_id</b> specifies a link to a candidate
          element, and is used to link to a single candidate on a ballot.
          Multiple (or zero) <b>candidate_id</b> tags may be present. This
          element has an optional attribute named <b>sort_order</b> that may be
          specified, giving the ordering of the candidates as they appear on the
          actual ballot.</td>
                <td>If the <b>candidate_id</b> field is invalid, the
          implementation is required to ignore it. If the <b>sort_order</b> attribute is invalid or missing the implementation is required to ignore it. In this case, the implementation should check for sort_order data in the candidate element. If none exists, the candidates should be ordered either alphabetically or randomly with a note specifying this ordering and that the true ballot ordering is likely to be different.</td>
              </tr>
              <tr>
                <td>custom_ballot_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>custom_ballot_id</b> specifies a link to a custom
          ballot element, and is used to place an uncommon ballot element (e.g.,
          recall, retention) on the ballot.</td>
                <td>If the <b>candidate_id</b> field is invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev9">
                <td>write_in</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>The <b>write_in</b> field specifies whether the ballot
          includes a place for write-ins. Valid items are "yes" and "no".</td>
                <td>If the <b>write_in</b> field is invalid, the implementation
          is required to default to "yes" if a <b>candidate_id</b>
          element is present and "no" otherwise.</td>
              </tr>
              <tr class="rev20">
                <td>image_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>image_url</b> links to a picture of this specific ballot item (i.e., one contest). This is <i>not</i> a link to the entire ballot with multiple contests. Because of the hundreds (or thousands) of possible permutations of ballot items combining into one full ballot, this schema does not provide for the linking to a full ballot.</td>
                <td>If the <b>image_url</b> field is invalid, the implementation
          is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a ballot element:</p>

          <pre class="brush: xml">
            &lt;ballot id="234122"&gt;
              &lt;candidate_id sort_order="1"&gt;3705&lt;/candidate_id&gt;
              &lt;candidate_id sort_order="2"&gt;3706&lt;/candidate_id&gt;
              &lt;write_in&gt;yes&lt;/write_in&gt;
              &lt;image_url&gt;http://elections.state.gov/ballots/images.php?race=sen15&lt;/image_url&gt;
            &lt;/ballot&gt;
          </pre>
        </div>

        <div id="candidateitems" class="rev1">
          <h2>Candidate items</h2>

          <table>
            <caption>The candidate object represents a candidate. If a candidate is running in multiple contests, the same Candidate object may be used provided that the candidate's name, party, etc. appear the same in the ballot items for both contests.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th><br>
                </th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the full complete name of the
          candidate, as it will appear on the ballot.</td>
                <td>If the <b>name</b> field is not present or invalid, the
          implementation is required to ignore the candidate element
          containing it.</td>
              </tr>
              <tr>
                <td>party</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>party</b> specifies the candidate's party affiliation</td>
                <td>If the <b>party</b> field is invalid the implementation is required
          to ignore it.</td>
              </tr>
              <tr>
                <td>candidate_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>candidate_url</b> specifies the URL for the
          candidate's official website</td>
                <td>If the <b>candidate_url</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>biography</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>biography</b> specifies the candidate's biographical
          information.</td>
                <td>If the <b>biography</b> field is invalid the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev9">
                <td>phone</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>phone</b> specifies the candidate's phone number.</td>
                <td>If the <b>phone</b> field is invalid the implementation is required
          to ignore it.</td>
              </tr>
              <tr>
                <td>photo_url</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>photo_url</b> specifies the URL for a photo of the
          candidate.</td>
                <td>If the <b>photo_url</b> field is invalid the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev13">
                <td>filed_mailing_address</td>
                <td>simpleAddressType</td>
                <td>Optional</td>
                <td>The <b>filed_mailing_address</b> specifies the mailing address the candidate when the candidate filed.</td>
                <td>If the <b>filed_mailing_address</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>email</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>email</b> specifies the email address of the
          candidate.</td>
                <td>If the <b>email</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev22">
                <td>sort_order</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>Recommended. The <b>sort_order</b> specifies position of the candidate on the ballot item for that contest. Recommended for candidate's whose positions can be determined without knowing the other candidates (e.g., when party determines order). Numbers are relative (with lowest appearing first) and need not be consecutive.</td>
                <td>If the <b>sort_order</b> field is invalid the
          implementation is required to ignore it. The implementation should check for a sort order in the ballot element. If none exists, the candidates should be ordered either alphabetically or randomly with a note specifying this ordering and that the true ballot ordering is likely to be different.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a candidate element:</p>

          <pre class="brush: xml">
            &lt;candidate id="3705"&gt;
              &lt;name&gt;Daniel Berlin&lt;/name&gt;
              &lt;party&gt;Democrat&lt;/party&gt;
              &lt;website_url&gt;http://www.dberlin.org&lt;/website_url&gt;
              &lt;bio&gt;Daniel Berlin is a lawyer&lt;/bio&gt;
              &lt;phone&gt;123-456-7890&lt;/phone&gt;
              &lt;photo&gt;http://www.dberlin.org/dannyb.jpg&lt;/photo&gt;
              &lt;filed_mailing_address&gt;
                &lt;line1&gt;123 Fake St.&lt;/line1&gt;
                &lt;city&gt;Rockville&lt;/city&gt;
                &lt;state&gt;OH&lt;/state&gt;
                &lt;zip&gt;20852&lt;/zip&gt;
              &lt;/filed_mailing_address&gt;
              &lt;email&gt;dberlin@example.org&lt;/email&gt;
            &lt;/candidate&gt;
          </pre>
        </div>

        <div id="campaignissueitems" class="rev12">
          <h2>Campaign Issue items</h2>

          <table>
            <caption>The campaign issue object represents an issue that candidates take positions on. A campaign issue object is linked to an election (not a contest) so that multiple candidates across contests can take positions on the same issue.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>name</b> specifies the name of the issue.</td>
                <td>If the <b>name</b> field is not present or invalid, the
          implementation is required to ignore the campaign issue element
          containing it.</td>
              </tr>
              <tr>
                <td>description</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>description</b> specifies the a short explanation of the issue.</td>
                <td>If the <b>description</b> field is invalid the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>category</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>category</b> specifies the classification of this issue according to the organization publishing issue information.</td>
                <td>If the <b>category</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>election_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>election_id</b> specifies the election for which this issue is relevant.</td>
                <td>If the <b>election_id</b> field is invalid the implementation
          is required to ignore the campaign issue element
          containing it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a campaign issue element:</p>

          <pre class="brush: xml">
            &lt;campaign_issue id="77777"&gt;
              &lt;name&gt;School Vouchers&lt;/name&gt;
              &lt;description&gt;Whether to provide public funds to help parents pay for the private education of their children.&lt;/description&gt;
              &lt;category&gt;Education&lt;/category&gt;
              &lt;election_id&gt;1&lt;/election_id&gt;
            &lt;/campaign_issue&gt;
          </pre>
        </div>

        <div id="candidatestatementitems" class="rev12">
          <h2>Candidate Statement items</h2>

          <table>
            <caption>The candidate statement object represents a position that a candidate has taken on an issue.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>candidate_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>candidate_id</b> specifies the candidate who has taken a position on the issue.</td>
                <td>If the <b>candidate_id</b> field is not present or invalid, the
          implementation is required to ignore the candidate statement issue containing it.</td>
              </tr>
              <tr>
                <td>campaign_issue_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>campaign_issue_id</b> specifies the campaign issue on which the candidate  has taken a position.</td>
                <td>If the <b>campaign_issue_id</b> field is not present or invalid, the
          implementation is required to ignore the candidate statement issue containing it.</td>
              </tr>
              <tr>
                <td>statement</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>statement</b> specifies the text of the candidates stated position on the issue.</td>
                <td>If the <b>statement</b> field is not present or invalid the
          implementation is required to ignore the candidate statement issue containing it.</td>
              </tr>
              <tr>
                <td>date</td>
                <td>Date</td>
                <td>Optional</td>
                <td>The <b>date</b> specifies the date that the candidate made the statement.</td>
                <td>If the <b>date</b> field is invalid the implementation
          is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a candidate statement element:</p>

          <pre class="brush: xml">
            &lt;candidate_statement id="88888"&gt;
              &lt;candidate_id&gt;3705&lt;/candidate_id&gt;
              &lt;campaign_issue_id&gt;77777&lt;/campaign_issue_id&gt;
              &lt;statement&gt;I think they need to be studied more.&lt;/statement&gt;
              &lt;date&gt;2008-06-01&lt;/date&gt;
            &lt;/candidate_statement&gt;
          </pre>
        </div>

        <div id="referendumitems" class="rev1">
          <h2>Referendum items</h2>

          <table>
            <caption>The Referendum object provides information about a referendum before the voters, including summary statements on each side.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>title</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>title</b> specifies the full title of the referendum,
          as it will appear on the ballot.</td>
                <td>If the <b>title</b> field is not present or invalid, the
          implementation is required to ignore the referendum element
          containing it.</td>
              </tr>
              <tr>
                <td>subtitle</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>subtitle</b> specifies the subtile for a referendum, as it appears on the ballot below the title.</td>
                <td>If the <b>subtitle</b> field is invalid the implementation
          is required to ignore it.</td>
              </tr>
              <tr class="rev2">
                <td>brief</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>brief</b> specifies a short summary of the referendum that is on the ballot below the title but above the text.</td>
                <td>If the <b>brief</b> field is invalid the implementation is required
          to ignore it.</td>
              </tr>
              <tr>
                <td>text</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>text</b> specifies the full text of the referendum as it appears on the ballot.</td>
                <td>If the <b>text</b> field is not present or invalid the
          implementation is required to treat it as if the text was an
          empty string.</td>
              </tr>
              <tr class="rev4">
                <td>pro_statement</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>pro_statement</b> specifies a statement in favor of
          the referendum. It does not necessarily appear on the ballot.</td>
                <td>If the <b>pro_statement</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev4">
                <td>con_statement</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>con_statement</b> specifies a statement in opposition
          to the referendum. It does not necessarily appear on the ballot.</td>
                <td>If the <b>con_statement</b> field is invalid the
          implementation is required to ignore it.</td>
              </tr>
              <tr class="rev13">
                <td>passage_threshold</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>passage_threshold</b> specifies the threshold of votes that the referendum needs in order to pass. The default is a simple majority (50% plus one vote). Other common thresholds are "three-fifths" and "two-thirds".</td>
                <td>If the <b>passage_threshold</b> field is invalid or not present
          the implementation <b>defaults</b> to "simple majority" or 50% + one vote.</td>
              </tr>
              <tr class="rev6">
                <td>effect_of_abstain</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>effect_of_abstain</b> specifies what effect abstaining
          (not voting) on this proposition will have (i.e., whether abstaining is
          considered a vote against it.)</td>
                <td>If the <b>effect_of_abstrain</b> field is invalid or not present
          the implementation is required to ignore it.</td>
              </tr>
              <tr class="rev4">
                <td>ballot_response_id</td>
                <td>Integer</td>
                <td><b>Required; multiple allowed</b></td>
                <td>The <b>ballot_response_id</b> specifies a link to a ballot
          response element. Multiple <b>ballot_response_id</b> tags may be
          present. This element has an optional attribute named <b>order</b> that may be specified, giving the ordering of the responses as they appear on the
          actual ballot.</td>
                <td>If no <b>ballot_response_id</b> field is invalid, the
          implementation is required to ignore the referendum element
          containing it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a candidate element:</p>
          <pre class="brush: xml">
            &lt;referendum id="30001"&gt;
              &lt;title&gt;Proposition 37&lt;/title&gt;
              &lt;subtitle&gt;A referendum to give Daniel Berlin more money&lt;/subtitle&gt;
              &lt;text&gt;Blah blah blah&lt;/text&gt;
              &lt;passage_threshold&gt;three-fifths&lt;/passage_threshold&gt;
              &lt;effect_of_abstain&gt;Abstaining is equivalent to voting no&lt;/effect_of_abstain&gt;
              &lt;ballot_response_id sort_order="1"&gt;111111&lt;/ballot_response_id&gt;
              &lt;ballot_response_id sort_order="2"&gt;111112&lt;/ballot_response_id&gt;
            &lt;/referendum&gt;
          </pre>
        </div>

        <div id="customballotitems" class="rev3">
          <h2>Custom Ballot items</h2>

          <table>
            <caption>A Custom Ballot object represents a ballot for a contest that neither pits candidates against each other nor is a referendum. Examples include recall elections and the retention of judges. A Custom Ballot object consists of multiple Ballot Response objects and it links to these objects.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>heading</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>heading</b> specifies the text at the top of the
          ballot item.</td>
                <td>If the <b>heading</b> field is not present or invalid, the
          implementation is required to ignore the custom ballot element
          containing it.</td>
              </tr>
              <tr>
                <td>ballot_response_id</td>
                <td>Integer</td>
                <td><b>Required; multiple allowed</b></td>
                <td>The <b>ballot_response_id</b> specifies a link to a ballot
          response element. Multiple <b>ballot_response_id</b> tags may be
          present. This element has an optional attribute named <b>sort_order</b>
          that may be specified, giving the ordering of the elements as they
          appear on the actual ballot. </td>
                <td>If no <b>ballot_response_id</b> field is invalid, the
          implementation is required to ignore the custom ballot element
          containing it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a custom ballot element: </p>

          <pre class="brush: xml">
            &lt;custom_ballot id="50001"&gt;
              &lt;heading&gt;Should Judge Smith be retained?&lt;/heading&gt;
              &lt;ballot_response_id sort_order="1"&gt;120001&lt;/ballot_response_id&gt;
              &lt;ballot_response_id sort_order="2"&gt;120002&lt;/ballot_response_id&gt;
            &lt;/custom_ballot&gt;
          </pre>
        </div>

        <div id="ballotresponseitems" class="rev3">

        <h2>Ballot Response items</h2>

        <table>
          <caption>A Ballot Response object represents a line on the ballot. Common examples might include "yes" or "no" for referenda, or a judge's name for a retention contest.</caption>
          <thead>
            <tr>
              <th>Tag</th>
              <th>Data type</th>
              <th>&nbsp;</th>
              <th>Description</th>
              <th>Error handling</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>text</td>
              <td>String</td>
              <td><b>Required</b></td>
              <td>The <b>text</b> specifies the text of the response.</td>
              <td>If the <b>text</b> field is not present or invalid, the
        implementation is required to ignore the ballot response
        element containing it.</td>
            </tr>
              <tr class="rev22">
                <td>sort_order</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>Recommended. The <b>sort_order</b> specifies position of the punches on the ballot item for that type of contest. Recommended for types of contests where the positions of the punches are fixed. Numbers are relative (with lowest appearing first) and need not be consecutive.</td>
                <td>If the <b>sort_order</b> field is invalid the
          implementation is required to ignore it. The implementation should check for a sort order in the ballot element. If none exists, the candidates should be ordered either alphabetically or randomly with a note specifying this ordering and that the true ballot ordering is likely to be different.</td>
              </tr>
          </tbody>
        </table>

        <p>Four example XML's for a custom ballot response element: </p>
        <pre class="brush: xml">
          &lt;ballot_response id="120001"&gt;
            &lt;text&gt;Yes&lt;/text&gt;
            &lt;sort_order&gt;1&lt;/sort_order&gt;
          &lt;/ballot_response&gt;
        </pre>

        <pre class="brush: xml">
          &lt;ballot_response id="120002"&gt;
            &lt;text&gt;No&lt;/text&gt;
            &lt;/ballot_response&gt;
          </pre>

          <pre class="brush: xml">
            &lt;ballot_response id="120003"&gt;
              &lt;text&gt;Retain&lt;/text&gt;
            &lt;/ballot_response&gt;
          </pre>

          <pre class="brush: xml">
            &lt;ballot_response id="120004"&gt;
              &lt;text&gt;Do Not Retain&lt;/text&gt;
            &lt;/ballot_response&gt;
          </pre>
        </div>

        <div id="streetsegment" class="rev11">
          <h2>Street Segment</h2>

          <table>
            <caption>A Street Segment objection represents a portion of a street and the links to the precinct (and possibly precinct split) that this geography (i.e., segment) is contained within. The start address house number must be less than the end address house number unless the segment consists of only one address in which case these values are equal.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr class="rev20">
                <td>start_house_number</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>start_house_number</b> is the house number that street segment start at. This value is very necessary for the street segment to make any sense. It must be less than (or equal to) the end_house_number.</td>
                <td>If the <b>start_house_number</b> field is not present or invalid, the
          implementation is required to ignore the street segment
          element containing it. If the <b>start_house_number</b> is greater than the <b>end_house_number</b> the implementation <b>may</b> reverse the start or or end points or it <b>may</b> ignore the element containing it.</td>
              </tr>
              <tr class="rev20">
                <td>end_house_number</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>end_house_number</b> is the house number that street segment ends at. This value is very necessary for the street segment to make any sense. It must be greater than (or equal to) the start_house_number.</td>
                <td>If the <b>end_house_number</b> field is not present or invalid, the
          implementation is required to ignore the street segment
          element containing it. If the <b>end_house_number</b> is less than the <b>start_house_number</b> the implementation <b>may</b> reverse the start or or end points or it <b>may</b> ignore the element containing it.</td>
              </tr>
              <tr>
                <td>odd_even_both</td>
                <td>oebEnum</td>
                <td>Required</td>
                <td>The <b>odd_even_both</b> field specifies whether the odd side of the street (in terms of house numbers), the even side, or both are in included in the street segment. Valid strings are "odd", "even", or "both". It does not apply to start_apartment_number or end_apartment_number.</td>
                <td>If the <b>odd_even_both</b> field is not present or invalid, the
          implementation is required to ignore the street segment element containing it.</td>
              </tr>
              <tr class="rev20">
                <td>start_apartment_number</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>start_apartment_number</b> is the apartment number that street segment start at. If this value is present then <b>start_house_number</b> must be equal to <b>end_house_number</b>.</td>
                <td>If the <b>start_apartment_number</b> field is not present or invalid, the
          implementation is required to ignore it and assume no distinction is made between apartment along the street segment.</td>
              </tr>
              <tr class="rev20">
                <td>end_apartment_number</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>end_apartment_number</b> is the apartment number that street segment ends at. If this value is present then <b>start_house_number</b> must be equal to <b>end_house_number</b>.</td>
                <td>If the <b>end_apartment_number</b> field is not present or invalid, the
          implementation is required to ignore it and assume no distinction is made between apartment along the street segment.</td>
              </tr>
              <tr class="rev20">
                <td>non_house_address</td>
                <td>detailAddressType</td>
                <td><b>Required</b></td>
                <td>The <b>non_house_address</b> is the common street address (as well as city, state, and zip) of the start and end points of the segment. Note the type is a <b>detailAddressType</b>; specific information such as street direction should be included. </td>
                <td>If the <b>non_house_address</b> field is not present or invalid, the
          implementation is required to ignore the street segment
          element containing it. </td>
              </tr>
              <tr>
                <td>precinct_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>precinct_id</b> references the precinct that contains the entire street segment</td>
                <td>If the <b>precinct_id</b> field is not present or invalid, the implementation is required to ignore the street segment element containing it.</td>
              </tr>
              <tr>
                <td>precinct_split_id</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>precinct_split_id</b> references the precinct split that contains the entire street segment</td>
                <td>If the <b>precinct_split_id</b> field is not present or invalid, the
          implementation is required to ignore the it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a street segment element: </p>
          <pre class="brush: xml">
            &lt;street_segment id="1210001"&gt;
              &lt;start_house_number&gt;1&lt;/start_house_number&gt;
              &lt;end_house_number&gt;10&lt;/end_house_number&gt;
              &lt;odd_even_both&gt;both&lt;/odd_even_both&gt;
              &lt;non_house_address&gt;
                &lt;street_direction&gt;E&lt;/street_direction&gt;
                &lt;street_name&gt;Guinevere&lt;/street_name&gt;
                &lt;street_suffix&gt;Dr&lt;/street_suffix&gt;
                &lt;address_direction&gt;SE&lt;/address_direction&gt;
                &lt;state&gt;VA&lt;/state&gt;
                &lt;city&gt;Annandale&lt;/city&gt;
                &lt;zip&gt;22003&lt;/zip&gt;
              &lt;/non_house_address&gt;
              &lt;precinct_id&gt;10101&lt;/precinct_id&gt;
            &lt;/street_segment&gt;
          </pre>
        </div>

        <div id="contestresult" class="rev21">
          <h2>Contest Result</h2>

          <table>
            <caption>A Contest Result item gives the contest-wide information (e.g., overvotes) for a given contest and a specified geography. In addition to <b>id</b> attribute, includes required attribute called <b>certification</b> of type <a href="#certificationetype">certificationEnum</a>.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>contest_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>contest_id</b> references the contest that this result element refers to.</td>
                <td>If the <b>contest_id</b> field is not present or invalid, the
          implementation is required to ignore the contest result element containing it.</td>
              </tr>
              <tr>
                <td>jursidiction_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>jurisdiction_id</b> references the jurisdiction (e.g., state, locality, precinct, precinct split) that these results are from. This id number can refer to a state_id, locality_id, precinct_id, precinct_split_id, or (in the case of complete results) an electoral_district_id. Districts that split jurisdictions are fine, these results need not be for the entire referenced jurisdiction, just the part of the jurisdiction that intersects with the district.</td>
                <td>If the <b>jurisdiction_id</b> field is not present or invalid, the implementation is required to ignore the contest result element containing it.</td>
              </tr>
              <tr>
                <td>entire_district</td>
                <td>yesNoEnum</td>
                <td><b>Required</b></td>
                <td>The <b>entire_district</b> field specifies whether the results represent the entire electoral district of the contest. The default is "no."</td>
                <td>If the <b>entire_district</b> field is not present or invalid, the implementation is required default to <b>no</b>.</td>
              </tr>
              <tr>
                <td>total_votes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>total_votes</b> field represents the total number of all votes, including blank votes, overvotes, write-ins, and accepted provisional ballot. In the schema, <b>total_votes = total_valid_votes + overvotes + blank votes</b>.</td>
                <td>If the <b>total_votes</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>total_valid_votes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>total_valid_votes</b> field represents the total number of votes that counted for a candidate, including write-ins that were counted and accepted provisional ballot. This total excludes write-ins that were not tabulated, overvotes, blank votes, and rejected provisional ballots. </td>
                <td>If the <b>total_valid_votes</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>overvotes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>overvotes</b> field represents the  number of votes in which the voter marked the ballot for more candidates than allowed.</td>
                <td>If the <b>overvotes</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>blank_votes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>blank_votes</b> field represents the number of votes that did not contribute to any valid candidate's total. Most common examples are: completely blank ballots and write-in ballots that were not aggregated. </td>
                <td>If the <b>blank_votes</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>acepted_provisional_votes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>accepted_provisional_votes</b> field represents the number of provisional votes that were accepted.</td>
                <td>If the <b>accepted_provisional_votes</b> field is not present or invalid, the implementation is required to ignore it. </td>
              </tr>
              <tr>
                <td>rejected_votes</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>rejected_votes</b> field represents the number of votes that were rejected, including both provisional ballots and judicially-rejected ballots. </td>
                <td>If the <b>rejected_votes</b> field is not present or invalid, the implementation is required to ignore it. </td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a street segment element: </p>
          <pre class="brush: xml">
            &lt;contest_result id="4410001" certification="certified"&gt;
              &lt;contest_id&gt;10003&lt;/contest_id&gt;
              &lt;jurisdiction_id&gt;20013&lt;/jurisdiction_id&gt;
              &lt;entire_district&gt;no&lt;/entire_district&gt;
              &lt;total_votes&gt;100&lt;/total_votes&gt;
            &lt;/contest_result&gt;
          </pre>
        </div>

        <div id="ballotresponseresult" class="rev21">
          <h2>Ballot Response Result (e.g., Candidate Result)</h2>

          <table>
            <caption>A Ballot Response Result provides the candidates' or referenda responses' vote totals. In addition to <b>id</b> attribute, includes required attribute called <b>certification</b> of type <a href="#certificationetype">certificationEnum</a>.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>contest_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>contest_id</b> references the contest that this result element refers to.</td>
                <td>If the <b>contest_id</b> field is not present or invalid, the
          implementation is required to ignore the contest result element containing it.</td>
              </tr>
              <tr>
                <td>jursidiction_id</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>jurisdiction_id</b> references the jurisdiction (e.g., state, locality, precinct, precinct split) that these results are from. This id number can refer to a state_id, locality_id, precinct_id, precinct_split_id, or (in the case of complete results) an electoral_district_id. Districts that split jurisdictions are fine, these results need not be for the entire referenced jurisdiction, just the part of the jurisdiction that intersects with the district.</td>
                <td>If the <b>jurisdiction_id</b> field is not present or invalid, the implementation is required to ignore the contest result element containing it.</td>
              </tr>
              <tr>
                <td>entire_district</td>
                <td>yesNoEnum</td>
                <td><b>Required</b></td>
                <td>The <b>entire_district</b> field specifies whether the results represent the entire electoral district of the contest. The default is "no."</td>
                <td>If the <b>entire_district</b> field is not present or invalid, the implementation is required default to <b>no</b>.</td>
              </tr>
              <tr>
                <td>votes</td>
                <td>Integer</td>
                <td><b>Required</b></td>
                <td>The <b>votes</b> field represents the total number of votes that the candidate received.</td>
                <td>If the <b>votes</b> field is not present or invalid, the implementation is required to ignore the element containing it.</td>
              </tr>
              <tr>
                <td>victorious</td>
                <td>yesNoEnum</td>
                <td>Optional</td>
                <td>Whether the candidate or referendum response was elected/won. Multiple candidates can have victorious=yes in elections which elect multiple candidates. This field is <i>very optional</i> and feed providers should feel no compunction to perform the interesting queries that may be needed to calculate this information.</td>
                <td>If the <b>votes</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>
          <p>Example XML for a street segment element:</p>
          <pre class="brush: xml">
            &lt;ballot_response_result id="4410001"&gt;
              &lt;contest_id&gt;10003&lt;/contest_id&gt;
              &lt;jurisdiction_id&gt;21003&lt;/jurisdiction_id&gt;
              &lt;entire_district&gt;no&lt;/entire_district&gt;
              &lt;votes&gt;24&lt;/votes&gt;
            &lt;/ballot_response_result&gt;
          </pre>
        </div>


        <div id="detailaddresstype" class="rev20">
          <h2>Detail Address (Type) items</h2>

          <table>
            <!-- for non-IE support
            <colgroup>
             <col class="show"/>
             <col class="visible_class"/>
             <col class="invisible_class"/>
             <col class="invisible_class"/>
             <col class="invisible_class"/>
            </colgroup> -->
            <caption>A Detail Address is an address that includes details such as street direction. It is a type and not an object, so no ID is required.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>house_number</td>
                <td>Integer</td>
                <td>Optional</td>
                <td>The <b>house_number</b> is the house number part of a street address. It may only be numeric. It is optional because: (1) some addresses do not have numbers ("A Second St."), (2) some addresses only have house number suffixes ("1/2 Second St."), and (3) a DetailAddress within a <b>street_segment</b> should not have a house number as it represents only the common aspects of the address. </td>
                <td>If the <b>house_number</b> field is not present or invalid, the
          implementation is required to ignore it. If each of <b>house_number</b>, <b>house_number_suffix</b>, and <b>house_number_prefix</b> is blank, the address represents the entire street.</td>
              </tr>
              <tr class="rev22">
                <td>house_number_prefix</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>house_number_prefix</b> is the house number part of a street address. It may contain letters or slashes (e.g., 'B' in 'B22 Main St').</td>
                <td>If the <b>house_number_prefix</b> field is not present or invalid, the implementation is required to ignore it. If each of <b>house_number</b>, <b>house_number_suffix</b>, and <b>house_number_prefix</b> is blank, the address represents the entire street.</td>
              </tr>
              <tr>
                <td>house_number_suffix</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>house_number_suffix</b> is the house number part of a street address. It may contain letters or slashes (e.g., B or 1/2).</td>
                <td>If the <b>house_number_suffix</b> field is not present or invalid, the
          implementation is required to ignore it. If each of <b>house_number</b>, <b>house_number_suffix</b>, and <b>house_number_prefix</b> is blank, the address represents the entire street.</td>
              </tr>
              <tr>
                <td>street_direction</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>street_direction</b> specifies the (inter-)cardinal direction of the street address (e.g., the "E" in "100 E Capitol St NE").</td>
                <td>If the <b>street_direction</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>street_name</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>street_name</b> is the name of the street for the address. It optionally may contain street direction, street suffix or address direction (e.g., both "Capitol" and "E Capitol St NE" are acceptable for the address "100 E Capitol St NE").</td>
                <td>If the <b>street_name</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>street_suffix</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>street_suffix</b> is the abbreviated, non-directional suffix to the street name. An example is "St" for the address "100 E Capitol St NE".</td>
                <td>If the <b>street_suffix</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>address_direction</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>address_direction</b> specifies the (inter-)cardinal direction of the entire address. An example is "NE" for the address "100 E Capitol St NE".</td>
                <td>If the <b>address_direction</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>apartment</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>apartment</b> specifies the intra-building address. A prefix (e.g., "Apt", "Suite") is optional. Examples are "Apt 303", "303", "4G", "4th Floor".</td>
                <td>If the <b>apartment</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>city</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>city</b> specifies the city or town of the address.</td>
                <td>If the <b>city</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>state</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>state</b> specifies the two-letter state abbreviation of the address.</td>
                <td>If the <b>state</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>zip</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>Highly recommended. The <b>zip</b> specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hypen ('-'). It is required as it helps with geocoding, which is crucial for distributors.</td>
                <td>If the <b>zip</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
            </tbody>
          </table>
          <p>Example XML for a Detail Addresses, which would appear within Street Segment objects: </p>
          <pre class="brush: xml">
            &lt;non_house_address&gt;
              &lt;street_direction&gt;E&lt;/street_direction&gt;
              &lt;street_name&gt;Guinevere&lt;/street_name&gt;
              &lt;street_suffix&gt;Dr&lt;/street_suffix&gt;
              &lt;address_direction&gt;SE&lt;/address_direction&gt;
              &lt;apartment&gt;616S&lt;/apartment&gt;
              &lt;state&gt;VA&lt;/state&gt;
              &lt;city&gt;Annandale&lt;/city&gt;
              &lt;zip&gt;22003&lt;/zip&gt;
            &lt;/non_house_address&gt;
          </pre>
          <pre class="brush: xml">
            &lt;non_house_address&gt;
              &lt;street_name&gt;E Guinevere Dr&lt;/street_name&gt;
              &lt;address_direction&gt;SE&lt;/address_direction&gt;
              &lt;apartment&gt;616S&lt;/apartment&gt;
              &lt;city&gt;Annandale&lt;/city&gt;
              &lt;state&gt;VA&lt;/state&gt;
              &lt;zip&gt;22003&lt;/zip&gt;
            &lt;/non_house_address&gt;<br>
          </pre>
          <pre class="brush: xml">
            &lt;non_house_address&gt;
              &lt;house_number&gt;1120B&lt;/house_number&gt;
              &lt;street_name&gt;E Guinevere Dr SE&lt;/street_name&gt;
              &lt;city&gt;Annandale&lt;/city&gt;
              &lt;state&gt;VA&lt;/state&gt;
              &lt;zip&gt;22003-2021&lt;/zip&gt;
            &lt;/non_house_address&gt;
          </pre>
        </div>

        <div id="simpleaddresstype" class="rev20">
          <h2>Simple Address (Type) items</h2>

          <table>
            <caption>A Simple Address is an address that combines each address line into one string. It is a type and not an object, so no ID is required.</caption>
            <thead>
              <tr>
                <th>Tag</th>
                <th>Data type</th>
                <th>&nbsp;</th>
                <th>Description</th>
                <th>Error handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>location_name</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>location_name</b> is names of the location specified by the address. It is optional. Example: Martin Luther King, Jr. Library. </td>
                <td>If the <b>location_name</b> field is not present or invalid, the
          implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>line1</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>line1</b> field is the first line of the address. It is required. Example: 1 Main St. NW</td>
                <td>If the <b>line1</b> field is not present or invalid, the
          implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>line2</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>line2</b> field specifies the second line of the address. Example: Second Floor</td>
                <td>If the <b>line2</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>line3</td>
                <td>String</td>
                <td>Optional</td>
                <td>The <b>line3</b> field specifies the third line of the address. Example: Cambridge University, Carlton Hall</td>
                <td>If the <b>line3</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
              <tr>
                <td>city</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>city</b> specifies the city or town of the address.</td>
                <td>If the <b>city</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>state</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>state</b> specifies the two-letter state abbreviation of the address.</td>
                <td>If the <b>state</b> field is not present or invalid, the implementation is required to ignore the address element containing it.</td>
              </tr>
              <tr>
                <td>zip</td>
                <td>String</td>
                <td><b>Required</b></td>
                <td>The <b>zip</b> specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hypen ('-'). It is required as it helps with geocoding, which is crucial for distributors.</td>
                <td>If the <b>zip</b> field is not present or invalid, the implementation is required to ignore it.</td>
              </tr>
            </tbody>
          </table>

          <p>Example XML for a Simple Addresses, which would appear within Polling Location and Early Vote Site items (among others):</p>
          <pre class="brush: xml">
            &lt;address&gt;
              &lt;line1&gt;543 E Falls Church Rd.&lt;/line1&gt;
              &lt;line2&gt;Second Floor&lt;/line2&gt;
              &lt;city&gt;Annandale&lt;/city&gt;
              &lt;state&gt;VA&lt;/state&gt;
              &lt;zip&gt;22003&lt;/zip&gt;
            &lt;/address&gt;
          </pre>
        </div>

        <div id="certificationtype" class="rev21">
          <h2>Certification Enumeration</h2>
          <table>
            <caption>The Certification Enumeration provides information of the level of completeness of results. Lowercase is required.</caption>
            <thead>
              <tr>
                <th>Enumeration</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>unofficial_partial</td>
                <td>Results are unofficial and incomplete. Total is expected to increase.</td>
              </tr>
              <tr>
                <td>unofficial_complete</td>
                <td>Results are unofficial, but complete. All sub-jurisdictions have reported. Results may change.</td>
              </tr>
              <tr>
                <td>certified</td>
                <td>Results are complete and certified.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div id="termdefs">
          <h3>Term definitions</h3>
          <dl>
            <dt>Required</dt>
            <dd>Any implementation that does not implement things noted as required is not considered a conforming implementation.</dd>
            <dt>Optional</dt>
            <dd>Conforming implementations may validly ignore anything marked optional and still be considered conforming.</dd>
          </dl>
        </div>

        <div id="fieldtypes">
          <h3>Field types</h3>

          <table>
            <thead>
              <tr>
                <th>Field type</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Date</td>
                <td><b>Date</b> fields are required to be valid xs:date format (as defined by <a href="http://www.w3.org/TR/xmlschema-2/#date">The XML Schema specification</a>), which is yyyy-mm-dd &lt;optional timezone info&gt;</td>
              </tr>
              <tr>
                <td>DateTime</td>
                <td><b>DateTime</b> fields are required to be valid xs:dateTime format (as defined by <a href="http://www.w3.org/TR/xmlschema-2/#dateTime">The XML Schema specification</a>), which is "YYYY-MM-DDThh:mm:ss" &lt;optional timezone info&gt;<br>
                </td>
              </tr>
              <tr>
                <td>String</td>
                <td><b>String</b> fields contain arbitrary UTF-8 text. These fields are required to be valid UTF-8. Further restrictions on the content of a String field may be included in each field description</td>
              </tr>
              <tr>
                <td>Integer</td>
                <td><b>Integer</b> fields describe a numeric value. The value of an integer field is required to be representable as a two's complement 64 bit signed integer. That is, the value must be between -9223372036854775807 and 9223372036854775807</td>
              </tr>
            </tbody>
          </table>
        </div>

        <p>An implementation <b>must not</b> rely on identifiers being the same over multiple fetches of the same data.</p>

        <div id="changelog">
          <h2> Revision information</h2>
          <table>
            <thead>
              <tr>
                <th>Date</th>
                <th>Author</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr class="rev0" onclick="highlight('rev0')">
                <td>10-23-2007</td>
                <td>dannyb</td>
                <td>Entry for initial draft.</td>
              </tr>
              <tr class="rev1" onclick="highlight('rev1')">
                <td>10-24-2007</td>
                <td>dannyb</td>
                <td>Added more top level items, finished off listing of tags</td>
              </tr>
              <tr class="rev2" onclick="highlight('rev2')">
                <td>10-26-2007</td>
                <td>dannyb</td>
                <td>Edited text of some entries, added race objects, registration
          info became a URL.</td>
              </tr>
              <tr class="rev3" onclick="highlight('rev3')">
                <td>11-7-2007</td>
                <td>Aaron Strauss</td>
                <td>Added geographic elements, including tabulation district.
          Added custom ballots.</td>
              </tr>
              <tr class="rev4" onclick="highlight('rev4')">
                <td>11-12-2007</td>
                <td>Aaron Strauss</td>
                <td>Added ballot drop location. Switched referendum to ballot
          response items. Added statewide tabulation area. Fixed typos.</td>
              </tr>
              <tr class="rev5" onclick="highlight('rev5')">
                <td>11-21-2007</td>
                <td>Aaron Strauss</td>
                <td>Races link to elections rather than the other way around</td>
              </tr>
              <tr class="rev6" onclick="highlight('rev6')">
                <td>11-26-2007</td>
                <td>Aaron Strauss</td>
                <td>Minor fixes to referendum (effect_of_abstain) and races
          (partisan and party_primary)</td>
              </tr>
              <tr class="rev7" onclick="highlight('rev7')">
                <td>11-28-2007</td>
                <td>dannyb</td>
                <td>Add a root element and rename a few elements for
          consistency/niceness.</td>
              </tr>
              <tr class="rev8" onclick="highlight('rev8')">
                <td>12-05-2007</td>
                <td>Aaron Strauss</td>
                <td>Minor changes.</td>
              </tr>
              <tr class="rev9" onclick="highlight('rev9')">
                <td>12-15-2007</td>
                <td>Aaron Strauss</td>
                <td>Races now called contests. Fixed documentation for
          contest.partisan, contest.primary_party, and
          referendum.effect_of_abstain. Added ballot.write_in. </td>
              </tr>
              <tr class="rev10" onclick="highlight('rev10')">
                <td>01-08-2008</td>
                <td>Aaron Strauss</td>
                <td>Added number of candidates elected and voting for in the
          Contest object. Added polling hours.</td>
              </tr>
              <tr class="rev11" onclick="highlight('rev11')">
                <td>03-06-2008</td>
                <td>Aaron Strauss</td>
                <td>Added source object. Added custom note object. Added election adminstration and election official objects. Added street segment and street address objects. <b>Backwards Incompatibility:</b> removed elections_url and rules_url from the state object; these fields are now in the election administration object linked from a state. The source object is required.</td>
              </tr>
              <tr class="rev12" onclick="highlight('rev12')">
                <td>04-22-2008</td>
                <td>Aaron Strauss</td>
                <td>Added campaign issues and candidate statements. Added two more tags in the source object. Added three more URLs to the election_administration object. Added inter-contest ordering to overall ballots. <b>Backwards Incompatibility:</b> Changed EIP to VIP.</td>
              </tr>
              <tr class="rev13" onclick="highlight('rev13')">
                <td>06-24-2008</td>
                <td>Aaron Strauss</td>
                <td>Added subtags to Ballot Drop Location, Election Administration, Contest, and Referendum. <b>Backwards Incompatibility:</b> Changed Candidate objects's subtag street_address to filed_mailing_address.</td>
              </tr>
              <tr class="rev14" onclick="highlight('rev14')">
                <td>10-01-2008</td>
                <td>Aaron Strauss</td>
                <td>Added subtags of mail-only and ballot_drop_location_id to precinct. Added subtag zip to street_address.</td>
              </tr>
              <tr class="rev15" onclick="highlight('rev15')">
                <td>10-10-2008</td>
                <td>Aaron Strauss</td>
                <td>Added voter_services subtag to election_administration. Allowed multiple polling_location_id subtags in the precinct and precinct_split objects.</td>
              <tr class="rev20" onclick="highlight('rev20')">
                <td>05-19-2009</td>
                <td>Aaron Strauss</td>
                <td>See <a href="http://www.votinginfoproject.org/blog">Blog Posting</a> for the numerous changes.</td>
              </tr>
              <tr class="rev21" onclick="highlight('rev21')">
                <td>10-31-2009</td>
                <td>Aaron Strauss</td>
                <td>Results.</td>
              </tr>
              <tr class="rev22" onclick="highlight('rev22')">
                <td>08-31-2010</td>
                <td>Aaron Strauss</td>
                <td><ul><li>Require exactly one election object.<li>Added start_date and end_date to early_vote_site element.<li>Added polling_location_id and early_vote_site_id fields to locality element. Because of this change, locality items must appear in the order specified in the documentation above.<li>Changed dates_times_open to days_times_open in the early_vote_site element. <li>Added filing_closed_date field to contest element.<li>Added ballot_style_image_url field to locality, precinct, and precinct_split elements.<li>Added sort_order to candidate element and to ballot_response element, and changed the order attribute of the candidate_id field (in the ballot element; as well as the ballot_response_id field in the referendum and custom_ballot elements) to sort_order for consistency.<li>Added what_is_on_my_ballot_url field to election_administration element.<li>Added village as valid locality type (in documentation).<li>Changed the partisan field in the contest element from required to optional (and marked for possible future deletion).<li>Added house_number_prefix field to detail_address type.<li>Clarified that the candidate email address field is email not email_address.</ul></td>
              </tr>
            </tbody>
          </table>

          <script type="text/javascript">
            document.writeln('<font size="-1">Click on a row to highlight changes made to a particular revision of this document.<\/font>');
          </script>
        </div>
      </div>
    </div> <!-- /.group -->

    <hr />

    <div class="footer">&copy; Copyright 2009 Voting Information Project <a href="#">Home</a> - <a href="#">About the Project</a> - <a href="#">Privacy Policy</a> - <a href="http://feeds.feedburner.com/VoterInformationProject">RSS</a></div> <!-- /footer -->
  </div>

  <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  <script type="text/javascript" src="http://fwab.jungshadow.com/js/fw/sh/shCore.js"></script>
  <script type="text/javascript" src="http://fwab.jungshadow.com/js/fw/sh/shBrushXml.js"></script>
  <script type="text/javascript">
    $(document).ready(function() {
      var sections = {},
          top = $('.sidebar .content-navigation').offset().top - parseFloat($('.sidebar .content-navigation').css('marginTop').replace(/auto/, 0)),
          filterNav = ['<h2 class="h4">Show</h2>',
      '<ul class="checkboxes">',
        '<li><input class="filter-check" type="checkbox" checked="checked" name="polling-check" /><label for="polling-check">Polling Locations</label>',
          '<ul>',
            '<li><input class="filter-check" type="checkbox" name="early-vote-check" /><label for="early-vote-check">Early Vote</label></li>',
          '</ul>',
        '</li>',
        '<li><input class="filter-check" type="checkbox" checked="checked" name="candidate-check" /><label for="candidate-check">Candidate Information</label>',
          '<ul>',
            '<li><input class="filter-check" type="checkbox" name="referenda-check" /><label for="referenda-check">Referenda</label></li>',
            '<li><input class="filter-check" type="checkbox" name="custom-contest-check" /><label for="custom-contest-check">Custom Contest</label></li>',
          '</ul>',
        '</li>',
        '<li><input class="filter-check" type="checkbox" checked="checked" name="election-check" /><label for="election-check">Election Official</label></li>',
        '<li><input class="filter-check" type="checkbox" name="results-check" /><label for="results-check">Results</label></li>',
        '<li><input class="filter-check" type="checkbox" name="misc-check" /><label for="misc-check">Miscellaneous</label></li>',
        '<li><input class="filter-check" type="checkbox" name="optional-check" /><label for="optional-check">Optional Fields</label></li>',
        '<li><input class="filter-check" type="checkbox" name="changelog-check" /><label for="changelog-check">Changelog</label></li>',
      '</ul>'].join('');

      $('.sidebar .content-navigation .links li').each(function(){
        sections[$('a',this).attr('href')] = $(this);
      });

      $('.sidebar .content-navigation').prepend(filterNav);

      $('.checkboxes input[type=checkbox]').bind({
        change: function(e) {
          var name = e.target && e.target.name;
          switch(name) {
            case 'polling-check':
              toggleSections([
                '#pollinglocationitems',
                '#stateitems',
                '#localityitems',
                '#precinctitems',
                '#precinctsplititems',
                '#streetsegment',
                '#detailaddresstype'
              ]);
              break;
            case 'early-vote-check':
              toggleSections([
                '#earlyvotesiteitems'
              ]);
              break;
            case 'candidate-check':
              toggleSections([
                '#contestitems',
                '#electoraldistrictitems',
                '#ballotitems',
                '#candidateitems',
                '#candidatestatementitems'
              ]);
              break;
            case 'referenda-check':
              toggleSections([
                '#referendumitems'
              ]);
              break;
            case 'custom-contest-check':
              toggleSections([
                '#customballotitems',
                '#ballotresponseitems'
              ]);
              break;
            case 'election-check':
              toggleSections([
                '#electionadministration',
                '#electionofficial'
              ]);
              break;
            case 'results-check':
              toggleSections([
                '#contestresult',
                '#campaignissueitems',
                '#ballotresponseresult'
              ]);
              break;
            case 'misc-check':
              toggleSections([
                '#externallinking'
              ]);
              toggleColumns();
              break;
            case 'optional-check':
              toggleOptional();
              break;
            case 'changelog-check':
              toggleSections([
                '#changelog'
              ]);
              break;
          }
        }
      });

      // make sure the non-essential items are hidden
      $('.checkboxes input[name=early-vote-check]').trigger('change');
      $('.checkboxes input[name=referenda-check]').trigger('change');
      $('.checkboxes input[name=custom-contest-check]').trigger('change');
      //$('.checkboxes input[name=election-check]').trigger('change');
      $('.checkboxes input[name=results-check]').trigger('change');
      $('.checkboxes input[name=misc-check]').trigger('change');
      $('.checkboxes input[name=optional-check]').trigger('change');
      $('.checkboxes input[name=changelog-check]').trigger('change');

      // wrap all pre sections with the Syntax Highlighter
      SyntaxHighlighter.all();

      // as the window scrolls, realign sidebar to top
      $(window).scroll(function (e) {
        // what the y position of the scroll is
        var y = $(this).scrollTop();

        // whether that's below the form
        if (y >= top) {
          // if so, ad the fixed class
          $('.sidebar .content-navigation').addClass('fixed');
        } else {
          // otherwise remove it
          $('.sidebar .content-navigation').removeClass('fixed');
        }
      });

      function toggleSections(arr) {
        for(var sect in sections) if (jQuery.inArray(sect,arr)!=-1) {
          $(sect).slideToggle();
          sections[sect].slideToggle();
        }
      }

      // TODO: extremely hackalicious. make less so.
      function toggleOptional() {
        $('table tr').each(function() {
          if(($('td:eq(2)',this).text()).match(/Optional/)) {
            if($('.checkboxes input[name=optional-check]').is(':checked')) {
              $(this).show();
            } else {
              $(this).hide();
            }
          }
        });
      }

      // TODO: extremely hackalicious. make less so.
      function toggleColumns() {
        $('table tr').each(function() {
          if($('.checkboxes input[name=misc-check]').is(':checked')) {
            $('td:eq(4)',this).show();
            $('th:eq(4)',this).show();
          } else {
            $('td:eq(4)',this).hide();
            $('th:eq(4)',this).hide();
          }
        });
      }
    });
  </script>
</body>
</html> 
